昨天我們和大家介紹了 Redis 中對於資料庫的基本操作,今天我們要開始介紹要如何針對不同的資料型態進行操作,在之前的篇章有提到 Redis 提供了豐富的資料型態和相對應的操作集,這使得 Redis 非常靈活和多功能,今天我們將探討 Redis 的三個基本資料型態:String、List 和 Hash,並學習如何有效地操作它們
首先我們要在終端機使用 `redis-cli` 進入 redis 的命令行介面
String 是 Redis 中最基本的資料型態
一個 key 對應一個 value,value 可以是字串
、整數
或 浮點數
顧名思義就是 設定 / 獲取
一個 key 的 value
若是要一次寫入多筆的話就使用 MSET / MGET
127.0.0.1:6379> SET product 100
OK
127.0.0.1:6379> GET product
"100"
-- 後面加上 `xx` 參數可以修改原本的以存在的鍵值對
127.0.0.1:6379> SET product 120 XX
OK
127.0.0.1:6379> GET product
"120"
在原本的 value 後新增新的內容
127.0.0.1:6379> SET name john
OK
127.0.0.1:6379> GET name
"john"
127.0.0.1:6379> APPEND name ny
(integer) 6
127.0.0.1:6379> GET name
"johnny"
將 key 中儲存的數字值 增加 1/減少 1
127.0.0.1:6379> GET counter
"120"
127.0.0.1:6379> INCR counter
(integer) 121
127.0.0.1:6379> DECR counter
(integer) 120
跟剛剛一樣只能用在儲存的值是整數的時候,但是可以給要增加多少的值
127.0.0.1:6379> GET counter
"100"
127.0.0.1:6379> INCRBY counter 50
(integer) 150
127.0.0.1:6379> DECRBY counter 20
(integer) 130
List 是簡單的字符串列表,按插入順序來排序,也可以在列表的開頭或尾部添加新元素
在列表的 左側(開頭) / 右側(尾部)
新增一或多個值
127.0.0.1:6379> RPUSH fruits apple banana
(integer) 2
127.0.0.1:6379> LRANGE fruits 0 -1
1) "apple"
2) "banana"
127.0.0.1:6379> LPUSH fruits orange
(integer) 3
127.0.0.1:6379> LRANGE fruits 0 -1
1) "orange"
2) "apple"
3) "banana"
獲取列表中的元素,語法為 LRANGE key start_idx end_idx
0 代表列表中的第一個元素 / -1 則為最後一個元素
-- 所以 0 -1 代表要拿到 fruits 的全部 value
127.0.0.1:6379> LRANGE fruits 0 -1
1) "orange"
2) "apple"
3) "banana"
移除和回傳列表中的 第一個 / 最後一個
元素
127.0.0.1:6379> LRANGE fruits 0 -1
1) "orange"
2) "apple"
3) "banana"
127.0.0.1:6379> LPOP fruits
"orange"
127.0.0.1:6379> RPOP fruits
"banana"
127.0.0.1:6379> LRANGE fruits 0 -1
1) "apple"
查看列表的長度
127.0.0.1:6379> LLEN fruits
(integer) 1
127.0.0.1:6379> RPUSH fruits grape pear
(integer) 3
127.0.0.1:6379> LLEN fruits
(integer) 3
Hash 是字串和其值之間的映射,這使得 Hash 非常適合用來存儲資料,也是很在 Redis 被使用
設定 / 獲取
Hash 中的一個鍵值對
127.0.0.1:6379> HSET user:1 name "John"
(integer) 1
127.0.0.1:6379> HGET user:1 name
"John"
一次設定 / 獲取
Hash 中的多個 key 的 value
127.0.0.1:6379> HMSET user:1 age 30 country "TW"
OK
127.0.0.1:6379> HMGET user:1 name age
1) "John"
2) "30"
列出 Hash 中的所有 key / value
127.0.0.1:6379> HKEYS user:1
1) "name"
2) "age"
3) "country"
127.0.0.1:6379> HVALS user:1
1) "John"
2) "30"
3) "TW"
獲取 Hash 中的所有 key 和 value
127.0.0.1:6379> HGETALL user:1
1) "name"
2) "John"
3) "country"
4) "TW"
5) "age"
6) "30"
刪除 Hash 中的一個或多個 key
127.0.0.1:6379> HDEL user:1 age
(integer) 1
127.0.0.1:6379> HGETALL user:1
1) "name"
2) "John"
3) "country"
4) "TW"
HLEN: 獲取 Hash 中的鍵值對數量
HEXISTS: 檢查一個 key 是否存在於 Hash 中
127.0.0.1:6379> HLEN user:1
(integer) 2 -- 代表有兩對 key-value
127.0.0.1:6379> HEXISTS user:1 name
(integer) 1 -- 存在回傳 1
127.0.0.1:6379> HEXISTS user:1 age
(integer) 0 -- 不存在回傳 1